\chapter{Űrlap feldolgozás}

	Az űrlap kezelő rendszer feladata nem ér véget az űrlap megjelenítésével, a
	beírt adatok feldolgozására is nyújt támogatást. A támogatás nem teljes körű,
	csupán alap szintű feldolgozást tesz lehetővé. A teljes feldolgozás túl nagy
	témakör egyetlen rendszer számára, de ilyen feldolgozó rendszer bekötése
	egyszerűvé válik a dokumentumtár használatával.
	
	A feldolgozás első lépéseként bemutatom, hogy a kitöltött adatok alapján
	hogyan építi fel a rendszer a felhasználói adatok tudásmodelljét, amely a
	tudásbázis segítségével az űrlaptól elkülönülve dolgozható fel. Az adatok
	megfelelő formába alakítása után lehetővé válik a tudásbázissal egybekötött
	feldolgozás, amit a rendszer SWRL szabályokkal megadott származtatott mezők
	útján támogat. A származtatott mezőkről már esett szó korábban is, de ebben a
	fejezetben kiemelem, hogy mennyire alkalmazható a módszer az űrlap magasabb
	szintű feldolgozására. Végül leírom, hogy további űrlapok alkalmazásával
	hogyan támogatható az adatok ember általi feldolgozása, módszert adva
	többszereplős komplex munkafolyamatok modellezésére.

	\section{OWL egyed létrehozása}

		Az online (\ref{ch3:online} szakasz) kitöltési architektúra alkalmazásakor a
		tudásbázist párhuzamosan építi a rendszer ahogy a felhasználó megadja az adatokat. Ennél
		a megközelítésnél a kitöltés után nincs további feladata a rendszernek,
		hiszen azonnal készen áll a kitöltött adatok tudásmodellje.
		
		Ezzel szemben az offline (\ref{ch3:offline} szakasz) architektúra által
		létrehozott űrlap kimenete egy absztrakt leírása a beírt adatoknak, önmagában nem
		használható. A megfelelő átalakítás azonban nem bonyolult, mivel az űrlap
		kimeneti XML dokumentuma (\ref{ch6:form-output} szakasz) követi a tudásbázis
		szerkezetét, és a megfelelő hivatkozásokat is tartalmazza.

		Mivel az űrlap által a felhasználó egy egyedet hoz létre, az átalakítás első
		lépése az, hogy az űrlap alapját képező osztálynak kérek a következtetőgéptől
		egy egyedet. Ezt az osztályt az űrlap kimenet \emph{``formdata''}
		gyökérelemének \emph{``uri''} attribútuma azonosítja. Ugyanezen
		\emph{``formdata''} elem minden \emph{``fielddata''} gyerekeleme a
		\emph{``fielddata''} \emph{``uri''} attríbutumában megadott tulajdonság
		értékeit tárolja egy-egy \emph{``value''} elemben. Ha ez az elem egy egyszerű
		szöveges értéket tartalmaz, akkor az egyed ezen tulajdonságának kell ezt az 
		értéket megadni. Ha viszont \emph{``value''} egy \emph{``formdata''}
		elemet tartalmaz, az egy beágyazott űrlapnak felel meg, amit ugyanezen
		módszer szerint kell példányosítani és a létrejött példányt kell az egyed
		tulajdonságába betölteni értékként.

	\section{SWRL szabályok alkalmazása a feldolgozásban}
		
		OWL felett definiált egyszerű szabályok tökéletesen alkalmasak származtatott
		mezők definiálására, de bonyolultabb összefüggések leírására is alkalmasak.
		Az általam létrehozott rendszer közvetlenül támogatja a származtatott mezők
		számítását, más származtatott mezőktől való függéssel együtt, tetszőleges
		mélységig. Származtatott mezőkkel elérhető, hogy űrlapon belül bármilyen
		SWRL segítségével leírható összefüggést kiszámítson a rendszer.
		
		Több űrlapot átfogó, azaz aggregált eredmények számítására a rendszer nem ad
		támogatást és az SWRL alkalmazhatósága is korlátozott emiatt. Az OWL nyílt
		világ feltételezése miatt az SWRL nem tartalmaz lehetőséget például egy
		osztályba tartozó egyedek listázására, hasonló funkciót csak külső eszközzel,
		a nyílt világ feltételezés felfüggesztésével lehet elérni.
		
	\section{Munkafolyamatok}

		Egy űrlap kitöltése gyakran csak egy hosszabb folyamat első lépése, például a
		rendszeres szociális támogatást igénylő űrlapba beírt adatok egy döntéshozó
		elé kerülnek, aki elfogadhatja, elutasíthatja az igényt, elfogadás esetén
		pedig meghatározhatja a havi juttatás mértékét. Általános esetben a
		feldolgozás ezen lépése egy újabb űrlapként értékelhető, amelynek
		előfeltétele egy igénylés űrlap kitöltése. 
		
		Ezt az elvet általánosítva jutottam arra az alapötletre, hogy egy űrlap a
		kitöltéshez igényelhet egy vagy több előzőleg kitöltött űrlapot, amiket az
		űrlapot kitöltő felhasználó számára olvasható formában meg kell jeleníteni,
		mivel ezek alapján tudja kitölteni a saját űrlapját.

		Könnyen elképzelhető, hogy ez alapján az űrlapok sorozata munkafolyamatok
		levezénylésére is alkalmas, ahol minden lépésben egy felhasználó az előző
		lépés eredményeit feldolgozva hoz létre újabb eredményt.
		
	\section{Szociális támogatási kérelem elbírálása}
		
%		\todo[inline]{3-4 oldal, ábrákkal, megoldás bemutatása}
		
		A munkafolyamatot modellező funkció egyszerű kipróbálásához létrehoztam egy
		második űrlapot, ami a szociális támogatási kérelem elbírálására ad
		lehetőséget. A második űrlap bemenete lesz egy kitöltött támogatási kérelem,
		amit a kitöltés előtt meg kell adnia a felhasználónak, így az elbírálás
		űrlapja csak akkor tölthető ki, ha létezik egy előzőleg kitöltött szociális
		támogatási kérelem űrlap.
		
		A szociális kérelmet érthető módon más személy bírálja el, mint aki a
		kérelmet eredetileg kitöltötte, sőt, a szociális támogatás esetében a két
		űrlapot kitöltő felhasználók csoportja diszjunkt módon elkülönül.
		
		A kérelem elbírálását reprezentáló űrlap kitöltésekor a bemenetként szolgáló
		kérelem űrlapon megadott adatokat meg kell jeleníteni a felhasználó számára,
		mert az alapján hozza meg a döntést és tölti ki az űrlapot.
		
% 		A munkafolyamatot modellező funkció egyszerű kipróbálásához a tudásbázisban
% 		létrehoztam a szociális támogatás igénylésének döntését reprezentáló osztályt, 
% 		az ehhez tartozó űrlap
% 		modellben pedig annotációval megjelölt tulajdonságot kötöttem hozzá, jelezve,
% 		hogy ezen osztály példányosításához szükség van egy Szoctam\_Hallgato
% 		osztályba tartozó érvényes példányra. Ezen űrlap kitöltéséhez a
% 		felhasználónak meg kell jelölnie egy már kitöltött szociális támogatási
% 		kérelem űrlapot, ami a döntési űrlap kitöltése közben megjelenik a
% 		számára, és a kitöltés után a döntést reprezentáló egyed is tartalmazza a
% 		megfelelő hivatkozást.

		\subsection{Szociális támogatás munkafolyamata}

		A szociális támogatás általam modellezett, egyszerűsített munkafolyamatát
		\aref{fig:szoctam_flow}. ábra mutatja be. A folyamat két lépésből áll és
		mindkét lépés egy-egy űrlap kitöltést foglal magába. Az ábrán megjelenítettem
		még a lépéseket végrehajtó felhasználókat, és a lépések kimeneteit, amelyek a
		lépések által reprezentált űrlapok kimenetének felelnek meg.

		\begin{figure}[!ht]
			\centering
			\includegraphics[width=120mm,
			keepaspectratio]{figures/ch7/szoctam_flow.pdf}
			\caption{Szociális támogatás elbírálási folyamata} 
			\label{fig:szoctam_flow}
		\end{figure}

		A folyamat első lépése a szociális támogatási kérelem űrlap kitöltése, amit a
		szociális támogatást igénylő hallgató tesz meg. A kitöltött űrlap kimenete
		bemenetként szolgál a második lépés számára, ahol a bírálóként megjelölt
		felhasználó döntést hoz a kérelemről. A döntésének az eredményét egy számára
		megjelenített űrlap mezőiben írja le az előre megadott formában, így a döntés
		is megjelenik egy űrlap kimeneteként, készen a feldolgozásra.

		\subsection{Szociális támogatás elbírálásának tudásmodellje}

		A szociális kérelemhez hasonlóan az elbírálás űrlapjához is létrehoztam a
		megfelelő tudásmodellt, ami leírja a bíráló döntését. A modell lényegesen
		egyszerűbb, mint a szociális támogatás modellje, mivel a bíráló számára csak
		kétféle döntési lehetőséget biztosít. A bíráló vagy elfogadja a kérelmet,
		mikor is a döntéssel egyidejűleg meghatározza a hallgató számára juttatandó
		összeget, vagy elutasítja azt, mikor is köteles megadni az elutasítás okát,
		szövegesen megfogalmazva.

		\begin{figure}[!ht]
			\centering
			\includegraphics[width=120mm,
			keepaspectratio]{figures/ch7/szoctam_biralat.png}
			\caption{Szociális támogatás elbírálásának modellje} 
			\label{fig:szoctam-biralat-modell}
		\end{figure}
		
		Az elbírálás tudásmodelljét \aref{fig:szoctam-biralat-modell}. ábra
		tartalmazza osztálydiagram formájában. Az űrlap által példányosított osztály
		a \emph{``Szoctam\_Biralat''}, amely egyrészt hivatkozik egy
		\aref{ch5:szoctam-modell}. szakaszban bemutatott \emph{``Szoctam\_Hallgato''} 
		objektumra, valamint a bíráló döntését
		reprezentáló \emph{``Dontes''} osztályra.
		
		Az űrlap modellben a \emph{``Szoctam\_Biralat''} osztály kapcsolata a
		\emph{``Szoctam\_Hallgato''} felé annotációval van megjelölve, jelezve, hogy
		ez a kapcsolat nem beágyazott űrlapot jelöl, hanem egy bemeneti űrlapot, azaz a
		bírálat űrlap ezen a ponton egy hivatkozást fog tartalmazni az előzőleg
		kitöltött kérelem űrlapra.

		A bírálatot reprezentáló osztály beágyazott űrlapként tartalmazza a
		\emph{``Dontes''} osztályt példányosító űrlapot. A döntés osztálya ugyancsak
		annotációval absztrakt osztályként van megjelölve, ami azt jelenti az űrlap
		kezelő rendszer számára, hogy ez az osztály önmagában nem példányosítható,
		ennek a leszármazott osztályai közül kell példányosítani egyet.
		
		Az absztrakt osztály példányosításához az űrlap kitöltésekor a bírálást végző
		felhasználó kiválaszt egyet az absztrakt osztály leszármazottai közül, azaz
		ebben az esetben kiválasztja, hogy elfogadja, vagy elutasítja-e a kérelmet. A
		példányosítandó osztály megadása után jelennek meg számára az osztály mezői
		beágyazott űrlapként.
		
		Az űrlap kitöltése után létrejön a bírálatot reprezentáló egyed, amely
		tartalmaz egy hivatkozást a kitöltött kérelemre, amelyre vonatkozik a
		bírálat, valamint a bírálat döntését, amely elfogadás esetén megadja a
		megítélt támogatást, elutasítás esetén pedig az elutasítás okát. Ezen
		kimeneti dokumentum alapján lehet visszajelzést küldeni a szociális
		támogatást kérelmező hallgató számára, illetve elfogadás esetén lehet kiadni
		az átutalási megbízást a hallgató számlájára.
